<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>可以对字符串进行的操作</title>

<para>
<ptitle>可以对字符串进行的操作</ptitle>
　在 TJS2 中，字符串被当作虚拟的 <kw>String</kw> 类的对象这样的东西，但是 String 类并不存在，实际上并没有 String 类的对象 ( 但是 对字符串使用 instanceof 运算符会返回 "String" )。<r/>
　但是，可以把字符串当作对象，使用使用各种方法和属性。<r/>
</para>

<para>
<ptitle>length</ptitle>
　length 属性返回字符串的长度。请注意，这个不是方法，而是属性。但是，不能往这个属性中写入数值。<r/>
<r/>
　TJS 内部把所有字符用 <kw>UNICODE</kw> 格式来处理，全角字符按 1 个字符来计数，半角字符也是按 1 个字符来计数。<r/>
<example>
	var str = "abc汉字";<r/>
	var n = str.length;  // n 中被带入 5 <r/>
	var n = "abc汉字".length; // 这个也一样会把 5 代入 n <r/>
</example>
</para>

<para>
<ptitle>'数値' 属性</ptitle>
　将数值作为属性来间接引用，可以对数值对应的位置的字符进行操作。<r/>
　例如，str 是字符串或者表示字符串的表达式，那么 str[0] 就是表示 str 的第一个字符的字符串。<r/>
　如果数值大于字符串的长度或为负值，会产生异常 ( 但是，指定字符串中最后一个字符的话，会返回空字符 )。<r/>
<r/>
　无法用于代入的表达式。<r/>
<example>
	var str = "abcdef";<r/>
	var c = str[0];  // 'a' 代入到 c 中<r/>
	var c = str[2];  // 'c' 代入到 c 中<r/>
	str[3] = 'A'; // 无法用于代入表达式，产发生错误<r/>
	var c = str[100]; // c 的值超出范围，发生错误<r/>
	var c = str[6]; // 空字符 '' 被代入<r/>
</example>
</para>

<para>
<ptitle>charAt</ptitle>
　charAt 方法会返回字符串中指定位置的字符。 和 '数值' 属性功能相同，但是在指定的值超出范围的时候会返回空字符 (不会产生异常)。<r/>
<bq>
格式 : charAt(&lt;字符位置&gt;)<r/>
</bq>
<example>
	var str = "abcdef";
	var c = str.charAt(3); // 'd' 被代入到 c 中
</example>
</para>

<para>
<ptitle>indexOf</ptitle>
　indexOf 方法返回子字符串的位置。<r/>
<bq>
構文 : indexOf(&lt;子字符串&gt;)<r/>
</bq>
　在字符串中从开头开始对 &lt;子字符串&gt; 进行搜索，返回第一次出现的位置。 返回值为 0 则代表出现在字符串的开头。返回值为 -1 则代表未搜索到子字符串。<r/>
<r/>
<example>
	var str = "abcdefghijkl";<r/>
	var n = str.indexOf("fgh"); // n 中被代入 5 <r/>
	var n = str.indexOf("xyz"); // n 中被代入 -1 <r/>
</example>
</para>

<para>
<ptitle>toLowerCase</ptitle>
　这个方法不包含参数。<r/>
　toLowerCase 返回将原字符串中的字母变为小写之后的字符串。<r/>
　全角字符不会被转换。<r/>
<r/>
　这个方法不会对原字符串造成影响。<r/>
<example>
	var lwr="ABCDEF".toLowerCase(); // lwr 中被代入 "abcdef" <r/>
</example>
<note>
　当前版本的 TJS2 中会对 字符编码 小于 0x80 的字符进行转换。<r/>
</note>
</para>

<para>
<ptitle>toUpperCase</ptitle>
　这个方法和 toLowerCase 相反，返回将小写字母变为大写后的字符串。<r/>
</para>


<para>
<ptitle>substring</ptitle>
　substring 方法返回字符串的子字符串。<r/>
<bq>
構文 : substring(&lt;起始字符位置&gt;[,&lt;字符数&gt;])
</bq>
　返回字符串中从、&lt;起始字符位置&gt;开始的&lt;字符数&gt;长度的子字符串。对原字符串没有影响。省略&lt;字符数&gt; 的话，会返回&lt;起始字符位置&gt; 以后的全部字符串。<r/>
　请注意，这与 JavaScript 中的同名方法的参数的意义不同。<r/>
<example>
	var ss="abcdefghijkl".substring(3,3); // ss 中被代入 "def" 
</example>
</para>

<para>
<ptitle>substr</ptitle>
　和 substring 相同。<r/>
</para>

<para>
<ptitle>sprintf</ptitle>
　sprintf 方法用于对字符串进行格式化。<r/>
<bq>
格式 : sprintf(参数, 参数, ....)<r/>
</bq>
　将当前字符串作为格式字符串，对指定的参数进行和C语言中的 sprintf 相同的字符串格式化并返回结果字符串。对原字符串没有影响。<r/>
<example>
	var formatted = "%04X %c %5d".sprintf(v1, v2, dic[v1]);
</example>
</para>


<para>
<ptitle>replace</ptitle>
　replace 方法用来对字符串进行替换。<r/>
<bq>
構文 : replace(&lt;模式&gt;, &lt;欲替换的字符串&gt;)
</bq>
　依照匹配模式对字符串进行替换，返回替换后的字符串。对原字符串没有影响。<r/>
　关于该方法的行为请参考 <link href="regexp"/> 的 replace 方法。<r/>
</para>

<para>
<ptitle>split</ptitle>
　split 方法用于切割字符串。<r/>
<bq>
構文 : split(&lt;模式/分隔符集合&gt;, &lt;(保留)&gt;, &lt;是否忽略空元素=false&gt;)
</bq>
　返回装有字符串分割结果的数组对象。<r/>
<r/>
　更多内容请参考 <link href="array"/> 的 split 方法 (请注意参数的顺序)。<r/>
</para>

<para>
<ptitle>escape</ptitle>
　escape 方法返回将当前字符串转换为能够在TJS的字符串常量中表示的形式的字符串。\ 和 " 等符号全都用 \ 符号转义。<r/>
<bq>
構文 : escape()
</bq>
　返回逃逸处理后的字符串。对原字符串没有影响。<r/>
<r/>
<example>
	var escaped = str.escape(); // str 中的 " 转换为 \" ，\ 转换为 \\ ，等等<r/>
</example>
</para>

<para>
<ptitle>trim</ptitle>
　trim 方法返回删除了当前字符串开头和结尾的空白的字符串。对原字符串没有影响。<r/>
　开头和结尾的空白是指字符编码为U+0001～U+0020的字符。也就是说，其中包含ASCII控制字符等，但不包含全角空格。<r/>
　如果从头到尾都是空白字符的话，全都会被删除。<r/>
<bq>
格式 : trim()
</bq>
　返回删除了当前字符串开头和结尾的空白的字符串。对原字符串没有影响。<r/>
<r/>
<example>
	var str = "  Hoge ".trim(); // str 的值是 "Hoge" 。<r/>
</example>
</para>

<para>
<ptitle>reverse</ptitle>
　reverse 方法返回字符顺序逆转后的字符串。对原字符串没有影响。<r/>
　当前版本的TJS2中不保证该方法能工作在包含UTF-16的Surrogate Pair的字符串下。<r/>
<bq>
格式 : reverse()
</bq>
　返回字符顺序逆转后的字符串。原字符串没有影响。<r/>
<r/>
<example>
	var str = "Hoge".reverse(); // str 的值是 "egoH" 。
</example>
</para>

<para>
<ptitle>repeat</ptitle>
　repeat 方法返回重复指定次数的字符串。对原字符串没有影响。<r/>
<bq>
格式 : repeat(count)
</bq>
　返回重复count次的字符串。对原字符串没有影响。<r/>
<r/>
<example>
	var str = "Hoge".repeat(3); // str 的值是 "HogeHogeHoge" 。
</example>
</para>


</doc>
